/*
 * 
 * Copyright (C) 2010-2012 Wilfried Elmenreich, Anita Sobe 
 * This file is part of VideoNetwork.
 * 
 * VideoNetwork is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 
 * You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>. 
 */
package proxy.repl;

import proxy.Configuration;
import proxy.Content;
import proxy.HormoneControls;
import proxy.Link;
import proxy.Migration;
import proxy.SearchServerNode;
import proxy.UnitContainer;
import simulation.Simulator;

public class SearchServerHormoneRepl extends SearchServerNode {

	// check hormones on neighbor nodes
	public SearchServerHormoneRepl(int id, Simulator simulator,
			Configuration config, HormoneControls hCtrl) {
		super(id, simulator, config, hCtrl);
	}

	@Override
	protected Migration createMigration(UnitContainer uc, double highestPhero,
			Link bestlink) {
		Migration m = super.createMigration(uc, highestPhero, bestlink);
		if (!m.isCopy()) {
			Content current = uc.getVideoUnit().getContent();
			int count = 0;
			for (Link li : links) {
				SearchServerNode neighbor = (SearchServerNode) li
						.getTargetNode();
				if (neighbor.getHormoneTable().containsKey(current)) {
					count++;
				}
			}
			if (count > 1) {
				m.setCopy(true);
			}
		}
		return m;
	}

}
